<?php
defined('EXEC') or die();
$transacao = 'grupo';
$modulo = Session::get('cd_modulo');

if(!$auth->isRead($transacao)){
	Util::info(Config::AUTH_MESSAGE);
	return true;
}

//Importando a class javascript datatable
Controller::addHead('jquery.datatables.min');

//Importando a classes
Loader::import('com.atitudeweb.SQL');
Loader::import('br.gov.ce.seduc.NivelAcesso');

//Exclusão de vários ou um registro
if(isset($_POST['checkdel'])){
	if($auth->isDelete($transacao)){
		if(SQL::remove('tethys.tb_grupo', 'ci_grupo', $_POST['checkdel'])){
			Util::notice('Grupo', 'Excluído com sucesso!');
		}
		else{
			Util::notice('Grupo', 'Houve um erro ao excluir o grupo!', 'error');
		}
	}
	else{
		Util::info(Config::AUTH_MESSAGE);
	}
}

//Alteração ou inclusão de um registro
if(isset($_GET['db']) && isset($_GET['form'])){

	$ci_grupo = $_GET['form'];
	$nm_grupo = addslashes($_POST['nm_grupo']);
	$fl_nivel_acesso = $_POST['fl_nivel_acesso'];
	$transacao = @$_POST['transacao'];
	$ci_usuario = $user['ci_usuario'];

	if($_GET['form'] == 0){ //cadastro
		$ciRow = query("SELECT nextval('tethys.tb_grupo_ci_grupo_seq') as ci_grupo")->fetch();
		$ci_grupo = $ciRow['ci_grupo'];
		$sql = "INSERT INTO tethys.tb_grupo(ci_grupo, nm_grupo, cd_modulo, fl_nivel_acesso)
		VALUES ($ci_grupo, '$nm_grupo', $modulo, $fl_nivel_acesso); ";

		if($transacao){
			for($i=0;$i<count($transacao);$i++){
				$ci_transacao = $transacao[$i];
				$fl_inserir = (@$_POST['insert_'.$ci_transacao] ? "S" : "N");
				$fl_alterar = (@$_POST['update_'.$ci_transacao] ? "S" : "N");
				$fl_deletar = (@$_POST['delete_'.$ci_transacao] ? "S" : "N");
				$sql .= "INSERT INTO tethys.tb_grupotransacoes(cd_grupo, cd_transacao, fl_inserir, fl_alterar, fl_deletar, cd_usuario_insert)
				VALUES ($ci_grupo, $ci_transacao, '$fl_inserir', '$fl_alterar', '$fl_deletar', $ci_usuario); ";
			}
		}
	}
	elseif($_GET['form'] > 0){ //alteração
		$sql = "UPDATE tethys.tb_grupo
				SET nm_grupo='$nm_grupo', fl_nivel_acesso=$fl_nivel_acesso
		WHERE ci_grupo = $ci_grupo;
		DELETE FROM tethys.tb_grupotransacoes
		WHERE cd_grupo = $ci_grupo; ";

		if($transacao){
			for($i=0;$i<count($transacao);$i++){
				$ci_transacao = $transacao[$i];
				$fl_inserir = (@$_POST['insert_'.$ci_transacao] ? "S" : "N");
				$fl_alterar = (@$_POST['update_'.$ci_transacao] ? "S" : "N");
				$fl_deletar = (@$_POST['delete_'.$ci_transacao] ? "S" : "N");
				$sql .= "INSERT INTO tethys.tb_grupotransacoes(cd_grupo, cd_transacao, fl_inserir, fl_alterar, fl_deletar, cd_usuario_insert)
				VALUES ($ci_grupo, $ci_transacao, '$fl_inserir', '$fl_alterar', '$fl_deletar', $ci_usuario); ";
			}
		}
	}

	if(execute($sql)){
		Controller::setInfo('Grupo', 'Salvo com sucesso!');
		Controller::redirect(Util::setLink(array('form=null', 'db=null')));
	}
	else{
		Util::notice('Grupo', 'Ocorreu um erro!', 'error');
	}
}

if(isset($_GET['form'])){ //Formulário para adição ou alteração de registro
	if($_GET['form'] == 0){
		if(!$auth->isCreate($transacao)){
			Util::info(Config::AUTH_MESSAGE);
			return true;
		}

		//Selecionando todas as transacões possíveis do módulo
		$sqlPossiveis = "select tt.ci_transacao, tt.nm_transacao
		from tethys.tb_transacao tt
		inner join tethys.tb_modulotransacao tmt on(tt.ci_transacao=tmt.cd_transacao)
		where tmt.cd_modulo = $modulo
		order by tt.nm_transacao";
		$queryPossiveis = query($sqlPossiveis);
	}
	else{
		if(!$auth->isUpdate($transacao)){
			Util::info(Config::AUTH_MESSAGE);
			return true;
		}

		//Selecionando todas as transacões possíveis do módulo exceto as já selecionadas
		$sqlPossiveis = "select tt.ci_transacao, tt.nm_transacao
		from tethys.tb_transacao tt
		inner join tethys.tb_modulotransacao tmt on(tt.ci_transacao=tmt.cd_transacao)
		where tmt.cd_modulo = $modulo
		  and tt.ci_transacao not in(select cd_transacao from tethys.tb_grupotransacoes where cd_grupo = ".$_GET['form'].")
		order by tt.nm_transacao";
		$queryPossiveis = query($sqlPossiveis);

		//Selecionando as transações já selecionadas
		$sqlSelecionadas = 'select tt.ci_transacao, tt.nm_transacao, tgt.fl_inserir, tgt.fl_alterar, tgt.fl_deletar
		from tethys.tb_grupotransacoes tgt
		inner join tethys.tb_transacao tt on(tgt.cd_transacao=tt.ci_transacao)
		where tgt.cd_grupo = '.$_GET['form'].'
		order by tt.nm_transacao asc';
		$querySelecionadas = query($sqlSelecionadas);

		$rowEdit = query('select * from tethys.tb_grupo where ci_grupo = '.$_GET['form'])->fetch();
	}
}
else{ //Consulta no banco para listagem dos registros

	$where = 'cd_modulo = '.$modulo.' and fl_nivel_acesso != 6 ';
	if(@$_POST['search1']){
		$term = addslashes($_POST['search1']);
		$where .=  "and nm_grupo ilike '%{$term}%' ";
	}
	if(@$_POST['search2']){
		$term = addslashes($_POST['search2']);
		$where .=  "and fl_nivel_acesso = {$term} ";
	}

	$sql = "select * from tethys.tb_grupo
	where $where
	order by nm_grupo asc
	limit {$limitPagina} offset ".(($p - 1) * $limitPagina);
	$query = query($sql);
	$sqlNum = "select count(*) as num from tethys.tb_grupo where $where";
	$rowNum = query($sqlNum)->fetch();
	$registros = $rowNum['num'];
	$paginacao = Util::pagination($registros, 2);
}

//Seleciona o nome do módulo
$queryModulo = query('select ds_modulo from tethys.tb_modulo where ci_modulo = '.$modulo)->fetch();
$ds_modulo = $queryModulo['ds_modulo'];
?>

 <style>
tr.odd td.sorting_1 { background-color: #E2F2DE; }
tr.even td.sorting_1 { background-color: #F3F9F2; }
table.display { color:#111111; }
table.display td { padding: 3px; height: 19px; font-size:10px; }
table.display th { height: 19px; }
tr.odd { background-color: #E2F2DE; }
.sorting_disabled { font-weight: normal; font-style: italic; }
.dataTables_info { padding: 5px 0 0 0; }
.paginate_disabled_next, .paginate_enabled_next { margin-left: 10px; padding-right: 23px; }
.paginate_disabled_previous, .paginate_enabled_previous, .paginate_disabled_next, .paginate_enabled_next { color: #111111 !important; cursor: pointer; float: left; height: 19px; }
.dataTables_paginate { float: right; text-align: right; }
.paginate_disabled_previous, .paginate_disabled_next { color: #666666 !important; }
.paginate_enabled_next { background: url("assets/forward_enabled.png") no-repeat scroll right top transparent; }
.paginate_enabled_next:hover { background: url("assets/forward_enabled_hover.png") no-repeat scroll right top transparent; }
.paginate_disabled_next { background: url("assets/forward_disabled.png") no-repeat scroll right top transparent; }
.paginate_enabled_previous { background: url("assets/back_enabled.png") no-repeat scroll left top transparent; }
.paginate_enabled_previous:hover { background: url("assets/back_enabled_hover.png") no-repeat scroll left top transparent; }
.paginate_disabled_previous { background: url("assets/back_disabled.png") no-repeat scroll left top transparent; }
.paginate_disabled_previous, .paginate_enabled_previous { padding: 2px 0 0 20px; }
.paginate_disabled_next, .paginate_enabled_next { padding: 2px 20px 0 0; }
.sorting_asc { background: url("assets/sort_asc.png") no-repeat scroll right center transparent; }
.sorting_desc { background: url("assets/sort_desc.png") no-repeat scroll right center transparent; }
#box_possiveis, #box_selecionadas{ background-color: #F8FCF7; border: 1px solid #CDDED3; margin: 5px; padding: 0 5px 5px 5px; border-radius:4px; height: 380px; cursor:default; }
#box_possiveis h1, #box_selecionadas h1{ color:#037D44; font-size:12px; }
.drag_1{ border:1px dashed #327E04 !important; }
.drag_2{ background-color:#EDF7EA !important; }
.tabledrag { width:350px; cursor:default; font-family: Verdana,Geneva,sans-serif; }
.tabledrag td { height:19px; padding: 3px; }
</style>

<div id="container">

	<!-- NOME DO MÓDULO E FORMULÁRIO DE PESQUISA -->
    <table class="actiontable">
		<tr>
			<td width="40">
				<img src="assets/grupos.png"/>
			</td>
			<td>
				<span class="actiontitle">Grupos <?php echo $ds_modulo; ?></span>
				<span class="actionview"> - <?php echo (!isset($_GET['form']) ? 'Pesquisa' : (@$_GET['form'] > 0 ? 'Edição' : 'Cadastro')); ?>
				</span>
			</td>
			<?php if(!isset($_GET['form'])){ ?>
				<td align="right">
					<button id="btAdd" class="btn btn-success btn-sm"><span class="glyphicon glyphicon-plus-sign"></span> Novo</button>
				</td>
			<?php } else{ ?>
				<td align="right">
					<button id="btVoltar" class="btn btn-success btn-sm" onclick="window.location='?page=acesso/grupo';"><span class="glyphicon glyphicon-chevron-left"></span> Voltar</button>
				</td>
			<?php } ?>
		</tr>
	</table>
    <?php if(!isset($_GET['form'])){ ?>
	<form action="<?php echo Util::setLink(array('p=null')); ?>" method="post" class="form-horizontal">
		<div class="form-group">
   			<label  class="control-label col-sm-2">Grupo:</label>
   			<div class="col-sm-5">
   				<input type="text" name="search1" id="search1" size="40" value="<?php echo @$_POST['search1']; ?>" class="form-control input-sm col-xs-3" />
   			</div>
   		</div>

   		<div class="form-group">
   			<label  class="control-label col-sm-2">Nível de Acesso:</label>
   			<div class="col-sm-5">
   				<select id="serarch2" name="search2" class="form-control input-sm col-xs-3">
					<option value="0">...</option>
					<?php
					foreach(NivelAcesso::$niveis as $key=>$value){
						if(@$_POST['search2'] == $key)
							echo "<option value=\"$key\" selected=\"selected\">$key - $value</option>";
						else
							echo "<option value=\"$key\">$key - $value</option>";
					}
					?>
				</select>
   			</div>
   			<button id="btSearch" class="btn btn-success btn-sm"><span class="glyphicon glyphicon-search"></span> Consultar</button>
   		</div>
	</form>
	<?php } ?>

    <?php if(!isset($_GET['form'])){ ?>

	<!-- LISTAGEM DOS REGISTROS -->
	<form method="post" id="formSearch">
	    <table class="table table-striped table-bordered table-hover form-horizontal">
	    	<thead>
	        	<tr class="ui-widget-header">
		        	<th width="25" class="check"><input type="checkbox" id="btCheckAll"/></th>
	                <th>Grupo</th>
	                <th>Nível de Acesso</th>
	                <th></th>
	            </tr>
	    	</thead>
	        <tbody>
	        	<?php
	        	while($row = $query->fetch()){
	        		echo '<tr>
		            	<td class="check"><input type="checkbox" class="btCheck" name="checkdel[]" value="'.$row['ci_grupo'].'"/></td>
		                <td>'.$row['nm_grupo'].'</td>
		                <td>'.$row['fl_nivel_acesso'].' - '.NivelAcesso::$niveis[$row['fl_nivel_acesso']].'</td>
		                <td width="30" align="center">
		                	<div onclick="window.location=\''.Util::setLink(array('form='.$row['ci_grupo'], 'del=null')).'\';" class="btEdit ui-widget ui-helper-clearfix" title="Editar">
						    	<div class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-pencil"></span></div>
						    </div>
		                </td>
		        	</tr>';
				}
	        	?>
	        </tbody>
		</table>
	</form>
	<button id="btDel" class="btn btn-success btn-sm" title="Excluir selecionados" style="float:left;"><span class="glyphicon glyphicon-trash"></span> Excluir</button>
	<?php echo $paginacao; ?>

    <?php } else{ ?>

	<!-- FORMULÁRIO DE CADASTRO -->
	<form action="<?php echo Util::setLink(array('db=1')) ?>" method="post" id="formInsertEdit" onsubmit="return test();">
			<div class="validateTips ui-corner-all" style="width:720px; margin: 0 auto; text-align:center;">Preencha corretamente o formulário.</div>

			<fieldset class="ui-corner-all" style="width:890px; margin:0 auto;">
				<legend>GRUPO E NÍVEL</legend>

				<table border="0" style="margin:0 auto;">
					<tr>
						<td align="right">Grupo: *</td>
						<td><input type="text" id="nm_grupo" name="nm_grupo" size="65" value="<?php echo trim(@$rowEdit['nm_grupo']); ?>" maxlength="50" style="text-transform: uppercase;" class="form-control input-sm" /></td>
					</tr>
					<tr>
						<td align="right">Nível de Acesso: *</td>
						<td>
							<select id="fl_nivel_acesso" name="fl_nivel_acesso" class="form-control input-sm">
								<option value="0">...</option>
								<?php
								foreach(NivelAcesso::$niveis as $key=>$value){
									if(@$rowEdit['fl_nivel_acesso'] == $key)
										echo "<option value=\"$key\" selected=\"selected\">$key - $value</option>";
									else
										echo "<option value=\"$key\">$key - $value</option>";
								}
								?>
							</select>
						</td>
					</tr>
				</table>
			</fieldset>
   			<br>
			<fieldset class="ui-corner-all" style="width:890px; margin:0 auto;">
				<legend>TRANSAÇÕES</legend>
				<table cellpadding="0" cellspacing="0" style="margin:0 auto;">
					<tr>
						<td>
							<div id="box_possiveis" style="width:370px;">
								<table cellpadding="0" cellspacing="0" border="0" width="100%">
									<tr>
										<td><h1>Possíveis:</h1></td>
										<td align="right"><img src="assets/icon_help.png" title="Clique e arraste para caixa (Pertencentes ao grupo)"/></td>
									</tr>
								</table>
								<table id="table_possiveis" cellpadding="0" cellspacing="0" border="0" class="display" width="100%">
									<thead>
										<tr>
											<th>&nbsp;</th>
										</tr>
									</thead>
									<tbody>
										<?php
										while($row = $queryPossiveis->fetch()){
											echo '<tr idtransacao="'.$row['ci_transacao'].'"><td>'.$row['nm_transacao'].'</td></tr>';
										}
										?>
									</tbody>
								</table>
							</div>
						</td>
						<td>
							<div id="box_selecionadas" style="width:470px;">
								<table cellpadding="0" cellspacing="0" border="0" width="100%">
									<tr>
										<td><h1>Pertencentes ao grupo:</h1></td>
										<td align="right"><img src="assets/icon_help.png" title="Para excluir, clique e arraste para caixa (Possíveis)"/></td>
									</tr>
								</table>
								<table id="table_selecionadas" cellpadding="0" cellspacing="0" border="0" class="display" width="100%">
									<thead>
										<tr>
											<th>&nbsp;</th>
											<th style="width:30px;" align="center"><img src="assets/icon_add.png" title="Adicionar"/></th>
											<th style="width:30px;"><img src="assets/icon_edit.png" title="Editar"/></th>
											<th style="width:30px;"><img src="assets/icon_del.png" title="Excluir"/></th>
										</tr>
									</thead>
									<tbody>
										<?php
										if(@$querySelecionadas){
											while($row = $querySelecionadas->fetch()){
												echo '<tr idtransacao="'.$row['ci_transacao'].'">
													<td>'.$row['nm_transacao'].'</td>
													<td><input type="hidden" name="transacao[]" value="'.$row['ci_transacao'].'" />
													<input type="checkbox" name="insert_'.$row['ci_transacao'].'" value="1" '.($row['fl_inserir'] == 'S' ? 'checked="checked"' : '').'/></td>
													<td><input type="checkbox" name="update_'.$row['ci_transacao'].'" value="1" '.($row['fl_alterar'] == 'S' ? 'checked="checked"' : '').'/></td>
													<td><input type="checkbox" name="delete_'.$row['ci_transacao'].'" value="1" '.($row['fl_deletar'] == 'S' ? 'checked="checked"' : '').'/></td>
												</tr>';
											}
										}
										?>
									</tbody>
								</table>
							</div>
						</td>
					</tr>
				</table>
			</fieldset>

			<br clear="all">

			<div id="boxRowsHidden" style="display:none;"></div>

			<div align="center"><button class="btn btn-success btn-sm" id="btInsertEdit" type="submit"><span class="glyphicon glyphicon-floppy-disk"></span> Salvar</button></div>

		</table>
    </form>

	<?php } ?>

</div>
<div id="dialog_del" title="<?php echo Config::SYSTEM; ?>">
	<p>Tem certeza que deseja excluir os registros selecionados?</p>
</div>
<script type="text/javascript">
var table_possiveis;
var table_selecionadas;
var objConfigTable = { 	"bLengthChange": false,
						"oLanguage": {
							"sInfo": "Mostrando _START_ até _END_<br> _TOTAL_ registros",
							"sInfoFiltered": " - filtrando de _MAX_ registros",
							"sSearch": "Procurar:",
							"oPaginate": {
								"sNext": "Próximo",
								"sPrevious": "Anterior"
							},
							"sZeroRecords": "NENHUM REGISTRO ENCONTRADO...",
							"sInfoEmpty": ""
						}
					};

function test(){
	var valid = true;
	$("#formInsertEdit").find("input,select").each(function(index){
		$(this).removeClass("ui-state-error");
	});
	valid = checkLength('nm_grupo', 'Grupo', 2) && valid;
	if($('#fl_nivel_acesso').val() == 0){
		$('#fl_nivel_acesso').addClass("ui-state-error").focus();
		valid = false;
		updateTips('Selecione corretamente um Nível de Acesso.');
	}

	var inputs = $(table_selecionadas.fnGetHiddenTrNodes()).find('input');
	$("#boxRowsHidden").append(inputs);
	return valid;
}
function dragRowTable(tableID, addExtraClass){
	$("#" + tableID + " tbody tr").not(".ui-draggable").each(function(){
		if($(this).children().hasClass("dataTables_empty"))
			return;

		$(this).addClass(addExtraClass);
		$(this).draggable({
			helper: function(){
				var index = $("#" + tableID).dataTable().fnGetPosition(this);
				var temp = $(this).clone();
				temp.find("td:gt(0)").remove();
				return $("<table class='tabledrag' rowindex='" + index + "'></table>").append(temp);
			},
			appendTo: "body",
			revert: "invalid",
			opacity: 0.9
		});
	});
}
$(function() {
	objConfigTable['fnDrawCallback'] = function(oSettings){ dragRowTable('table_possiveis', 'transacao_add'); };
	table_possiveis = $('#table_possiveis').dataTable(objConfigTable);
	objConfigTable['aoColumnDefs'] = [ {"bSortable":false, "aTargets":[1, 2, 3] } ];
	objConfigTable['fnDrawCallback'] = function(oSettings){ dragRowTable('table_selecionadas', 'transacao_added'); };
	table_selecionadas = $('#table_selecionadas').dataTable(objConfigTable);
	$("#box_selecionadas").droppable({
		activeClass: "drag_1",
		hoverClass: "drag_2",
		accept: ".transacao_add",
		drop: function(event, ui){
			var index = ui.helper.attr("rowindex");
			var idtransacao = ui.draggable.attr("idtransacao");
			var a = table_selecionadas.fnAddData([ui.draggable.text().trim(),"<td><input type='hidden' name='transacao[]' value='" + idtransacao + "' /><input type='checkbox' name='insert_" + idtransacao + "' value='1' /></td>","<td><input type='checkbox' name='update_" + idtransacao + "' value='1' /></td>","<td><input type='checkbox' name='delete_" + idtransacao + "' value='1' /></td>"]);
			table_possiveis.fnDeleteRow(index);
			var nTr = table_selecionadas.fnSettings().aoData[ a[0] ].nTr;
			$(nTr).attr("idtransacao", idtransacao);
		}
	});
	$("#box_possiveis").droppable({
		activeClass: "drag_1",
		hoverClass: "drag_2",
		accept: ".transacao_added",
		drop: function(event, ui){
			var index = ui.helper.attr("rowindex");
			var idtransacao = ui.draggable.attr("idtransacao");
			var a = table_possiveis.fnAddData([ui.draggable.text().trim()]);
			table_selecionadas.fnDeleteRow(index);
			var nTr = table_possiveis.fnSettings().aoData[ a[0] ].nTr;
			$(nTr).attr("idtransacao", idtransacao);
		}
	});
});
</script>